package Soligee.model.vo.lancamentos;

import java.util.Date;

import java.io.Serializable;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.FetchMode;
/**
 *
 * @author Alex
 */
@Entity
@Table(name = "cheque")
public class ChequeVO implements Serializable {

    @Id
    @SequenceGenerator(name = "cod_cheque", sequenceName = "cod_cheque_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cod_cheque")
    @Column(name = "cod_cheque", nullable = false)
    private int codCheque;

    @Column(name = "num_cheque", nullable = false)
    private String numCheque;

    @Column(name = "agencia", nullable = false)
    private String agencia;

    @Column(name = "num_conta", nullable = false)
    private String numConta;

    @Column(name = "situacao", nullable = false)
    private int situacao;

    @Column(name = "emitente", nullable = false)
    private String emitente;

    @Column(name = "observacao_referente", nullable = false)
    private String obsReferente;

    @Column(name = "data_lancamento", nullable = false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataLancamento;

    @Column(name = "data_deposito", nullable = false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataDeposito;
        
    @Column(name = "valor", nullable = false)
    private Double valor;

    @Column(name = "ativo")
    private boolean ativo;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_banco", insertable = true, updatable = true, nullable = false)
    @Fetch(FetchMode.JOIN)
    @Cascade(CascadeType.SAVE_UPDATE)
    private BancoVO banco;

    public ChequeVO(int codCheque,String agencia, String numConta,String numCheque, int situacao, String emitente, String obsReferente, Date dataLancamento, Date dataDeposito, Double valor, BancoVO banco) {
        this.codCheque = codCheque;
        this.numCheque = numCheque;
        this.numConta = numConta;
        this.agencia = agencia;
        this.situacao = situacao;
        this.emitente = emitente;
        this.obsReferente = obsReferente;
        this.dataLancamento = dataLancamento;
        this.dataDeposito = dataDeposito;
        this.valor = valor;
        this.banco = banco;
        this.ativo=true;
    }

    public ChequeVO() {
    }


    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    public BancoVO getBanco() {
        return banco;
    }

    public void setBanco(BancoVO banco) {
        this.banco = banco;
    }

    public int getCodCheque() {
        return codCheque;
    }

    public void setCodCheque(int codCheque) {
        this.codCheque = codCheque;
    }

    public Date getDataDeposito() {
        return dataDeposito;
    }

    public void setDataDeposito(Date dataDeposito) {
        this.dataDeposito = dataDeposito;
    }

    public Date getDataLancamento() {
        return dataLancamento;
    }

    public void setDataLancamento(Date dataLancamento) {
        this.dataLancamento = dataLancamento;
    }

    public String getEmitente() {
        return emitente;
    }

    public void setEmitente(String emitente) {
        this.emitente = emitente;
    }

    public String getNumCheque() {
        return numCheque;
    }

    public void setNumCheque(String numCheque) {
        this.numCheque = numCheque;
    }

    public String getNumConta() {
        return numConta;
    }

    public void setNumConta(String numConta) {
        this.numConta = numConta;
    }

    public String getObsReferente() {
        return obsReferente;
    }

    public void setObsReferente(String obsReferente) {
        this.obsReferente = obsReferente;
    }

    public int getSituacao() {
        return situacao;
    }

    public void setSituacao(int situacao) {
        this.situacao = situacao;
    }

    public String getAgencia() {
        return agencia;
    }

    public void setAgencia(String agencia) {
        this.agencia = agencia;
    }

    public Double getValor() {
        return valor;
    }

    public void setValor(Double valor) {
        this.valor = valor;
    }


   
}
